<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>运算符</title>
</head>
<body>
<script>
    // 1.+ - * /
    console.log(3 / 2);// 不同于java JS不区分整数小数类型 因此可以得出 1.5
    console.log(4 / 2);
    // 2.关系运算符(一) ==: 松散比较运算符(直接比较二者的值) ===: 严格比较运算符(先比较类型 再比较值)
    let a = 1;
    let b = true;// 当布尔类型参与比较运算时 会将true值转换为1 false转换为0
    console.log(a == b);// 直接比较二者的值 参与值的比较时b为 Number(true)=1
    console.log(a === b);// 先比较类型 再比较值
    // 3.数据类型转换
    /**
     在html页面的控制台将以下的值的数据类型转换为boolean类型:
     * > Boolean(0)
       <- false
     * > Boolean(null)
       <- false
     * > Boolean(undefined)
       <- false
     * > Boolean('')
       <- false
     * > Boolean(NaN)
       <- false
     */
    // 上述得到的结果都为false 剩余其他数据结果都为true js代码如下:
    console.log(Boolean(0));
    console.log(Boolean(null));
    console.log(Boolean(undefined));
    console.log(Boolean(''));// 空字符串
    console.log(Boolean(NaN));// Not a Number(0.0/0.0)
                              // 1/0得到Infinity - 0/0得到NaN

    // 4.关系运算符(二)
    console.log(3 > 10);// false
    console.log('3'<10);// true 若比较时一方有数字 则会将另一方转为数值类型再进行比较 此处'3' -> 3
    console.log('3' > '10');// true 51>49 两边同为字符串类型的数据比较大小时 会根据阿斯克编码值进行比较
        // 快捷获取字符串对应的阿斯克编码值
        // 获取规则 当字符串包含多个字符 默认筛查第一个字符的编码值 若想筛查其他字符 需要传参
            // 例如: 下方第二个'10'筛查的就是第一个字符1的编码值 若想筛查0的编码值 需要进行如下修改
            // '10'.charCodeAt(1) 注意 传输的参数并非字符串本身而为其索引值 0代表第一个索引 1代表第二个索引 以此类推
        // 数字类型的字符串的阿斯克编码只有0-9有 其他的编码皆为其拼接而成 而汉字字符串则遵循一个汉字一个字符的规则
    console.log('3'.charCodeAt());// 51
    console.log('10'.charCodeAt());// 49
        // 汉字的比较
    console.log('超' > '博');
    console.log('超'.charCodeAt());
    console.log('博'.charCodeAt());

    // 5.三目运算符 1号位置 ? 2号位置(表示true) : 3号位置(表示false)
    // 取值规则: 1号位置的结果为boolean类型 2号位置和3号位置对应true和false
    let d = 0;
    console.log(d == 0 ? 'YES' : 'NO');// 'YES'
    // '='是赋值符号 给d赋值为0 转为布尔类型为false 所以取3号位置的值 'NO'
    console.log(d = 0 ? 'YES' : 'NO');// 'NO'
</script>
</body>
</html>